package com.lei.hash;

import java.util.HashMap;
import java.util.Map;

/**
 * LeetCode 454. 四数相加 II
 */
public class FourSumCount {
    public int sum(int[] nums1, int[] nums2, int[] nums3, int[] nums4){
        Map<Integer,Integer> map = new HashMap<>();
        int temp;
        int res = 0;
        //统计两个数组中的元素之和，同时统计出现的次数，放入map
        for(int i : nums1){
            for (int j : nums2) {
                temp = i + j;
                if(map.containsKey(temp)){
                    map.put(temp,map.get(temp) + 1);
                }else {
                    map.put(temp,1);
                }
            }
        }
        //统计剩余的两个元素的和，
        for(int i : nums3){
            for (int j : nums4) {
                temp = i + j;
                //在map中找是否存在相加为0的情况，
                if(map.containsKey(0 - temp)){
                    //同时记录次数
                    res += map.get(0 - temp);
                }
            }
        }
        return res;
    }

    public static void main(String[] args) {
        int [] nums1 = new int[]{1,2};
        int [] nums2 = new int[]{-2,-1};
        int [] nums3 = new int[]{-1,2};
        int [] nums4 = new int[]{0,2};
        FourSumCount f = new FourSumCount();
        System.out.println(f.sum(nums1, nums2, nums3, nums4));
    }
}
